package alo.p6.work;

import alo.p6.BinaryTreeNode;

import java.util.LinkedList;
import java.util.Queue;
/**
 * @author Fxc
 * @date 2020/11/26 0026 12:40
 * //求所有结点数据和
 */
public class Add {

    //递归
    int add(BinaryTreeNode root){
        if (root==null){
            return 0;
        }
        else{
            return root.getData()+add(root.getLeft())+add(root.getRight());
        }
    }
    //非递归,利用层续遍历
    int add2(BinaryTreeNode root){
        BinaryTreeNode temp;
        Queue<BinaryTreeNode> queue=new LinkedList<>();
        if (root==null){
            return 0;
        }
        int sum=0;
        queue.offer(root);
        while (!queue.isEmpty()){
            temp=queue.poll();
            sum+=temp.getData();
            if (temp.getLeft()!=null){
                queue.offer(temp.getLeft());
            }
            if (temp.getRight()!=null){
                queue.offer(temp.getRight());
            }
        }
        return sum;
    }

}
